package com.dys.testinternalclass;

/**
 * @className: com.dys.testinternalclass.OuterClass2
 * @description: 局部内部类的使用：
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/22 下午8:59
 */
public class OuterClass2 {

    public void outerMethod() {
        final int num = 10;
        class A {
            public void innerMethod() {
                // num = 20;
                System.out.println(num);
            }
        }
    }

    // 如果B类在整个项目中只使用一次，那么就没有必要单独创建一个B类，使用内部类就可以了
    // 多态的应用,用接口当做实现类的返回值
    public Comparable outerMethod2() {
        class B implements Comparable {

            @Override
            public int compareTo(Object o) {
                return 100;
            }
        }
        return new B();
    }

    public Comparable outerMethod3() {
        // 匿名内部类
        return new Comparable() {

            @Override
            public int compareTo(Object o) {
                return 100;
            }
        };
    }

    public void test() {
        Comparable com = new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 200;
            }
        };
        System.out.println(com.compareTo("abc"));
    }
}

class Test {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        OuterClass2 outerClass2 = new OuterClass2();
        outerClass2.test();
    }
}
